/***************************************************************************/
/*                                                                         */
/*  ftstdlib.h                                                             */
/*                                                                         */
/*    ANSI-specific library and header configuration file (specification   */
/*    only).                                                               */
/*                                                                         */
/*  Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by                  */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/


/*************************************************************************/
/*                                                                       */
/* This file is used to group all #includes to the ANSI C library that   */
/* FreeType normally requires.  It also defines macros to rename the     */
/* standard functions within the FreeType source code.                   */
/*                                                                       */
/* Load a file which defines __FTSTDLIB_H__ before this one to override  */
/* it.                                                                   */
/*                                                                       */
/*************************************************************************/


#ifndef __FTSTDLIB_H__
#define __FTSTDLIB_H__


#include <stddef.h>

#define ft_ptrdiff_t ptrdiff_t


/**********************************************************************/
/*                                                                    */
/*                           integer limits                           */
/*                                                                    */
/* UINT_MAX and ULONG_MAX are used to automatically compute the size  */
/* of `int' and `long' in bytes at compile-time.  So far, this works  */
/* for all platforms the library has been tested on.                  */
/*                                                                    */
/* Note that on the extremely rare platforms that do not provide      */
/* integer types that are _exactly_ 16 and 32 bits wide (e.g. some    */
/* old Crays where `int' is 36 bits), we do not make any guarantee    */
/* about the correct behaviour of FT2 with all fonts.                 */
/*                                                                    */
/* In these case, `ftconfig.h' will refuse to compile anyway with a   */
/* message like `couldn't find 32-bit type' or something similar.     */
/*                                                                    */
/**********************************************************************/


#include <limits.h>

#define FT_CHAR_BIT CHAR_BIT
#define FT_INT_MAX INT_MAX
#define FT_INT_MIN INT_MIN
#define FT_UINT_MAX UINT_MAX
#define FT_ULONG_MAX ULONG_MAX


/**********************************************************************/
/*                                                                    */
/*                 character and string processing                    */
/*                                                                    */
/**********************************************************************/


#include <string.h>

#define ft_memchr memchr
#define ft_memcmp memcmp
#define ft_memcpy memcpy
#define ft_memmove memmove
#define ft_memset memset
#define ft_strcat strcat
#define ft_strcmp strcmp
#define ft_strcpy strcpy
#define ft_strlen strlen
#define ft_strncmp strncmp
#define ft_strncpy strncpy
#define ft_strrchr strrchr
#define ft_strstr strstr


/**********************************************************************/
/*                                                                    */
/*                           file handling                            */
/*                                                                    */
/**********************************************************************/


#include <stdio.h>

#define FT_FILE FILE
#define ft_fclose fclose
#define ft_fopen fopen
#define ft_fread fread
#define ft_fseek fseek
#define ft_ftell ftell
#define ft_sprintf sprintf


/**********************************************************************/
/*                                                                    */
/*                             sorting                                */
/*                                                                    */
/**********************************************************************/


#include <stdlib.h>

#define ft_qsort qsort


/**********************************************************************/
/*                                                                    */
/*                        memory allocation                           */
/*                                                                    */
/**********************************************************************/


#define ft_scalloc calloc
#define ft_sfree free
#define ft_smalloc malloc
#define ft_srealloc realloc


/**********************************************************************/
/*                                                                    */
/*                          miscellaneous                             */
/*                                                                    */
/**********************************************************************/


#define ft_atol atol
#define ft_labs labs


/**********************************************************************/
/*                                                                    */
/*                         execution control                          */
/*                                                                    */
/**********************************************************************/


#include <setjmp.h>

#define ft_jmp_buf jmp_buf      /* note: this cannot be a typedef since */
                                /*       jmp_buf is defined as a macro  */
                                /*       on certain platforms           */

#define ft_longjmp longjmp
#define ft_setjmp(b) setjmp(*(jmp_buf*)&(b))         /* same thing here */


/* the following is only used for debugging purposes, i.e., if */
/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined    */

#include <stdarg.h>


#endif /* __FTSTDLIB_H__ */


/* END */